package 滑动窗口.找到字符串中所有字母异位词438;

import utils.Utils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Solution {

    public static List<Integer> findAnagrams(String s, String p) {
        List<Integer> res = new ArrayList<>();
        if(s.length() < p.length()){
            return res;
        }
        int[] sindex = new int[26];
        int[] pindex = new int[26];

        for(int i=0;i<p.length();i++){
            sindex[s.charAt(i) - 'a']++;
            pindex[p.charAt(i) - 'a']++;
        }

        if(Arrays.equals(sindex,pindex)){
            res.add(0);
        }

        for(int i=0;i<s.length()-p.length();i++){
            sindex[s.charAt(i) - 'a']--;
            sindex[s.charAt(i + p.length()) - 'a']++;

            if(Arrays.equals(sindex,pindex)){
                res.add(i+1);
            }
        }

        return res;
    }

    public static void main(String[] args) {
        String s = "abab", p = "ab";
        Utils.printIntList(findAnagrams(s,p));
    }
}
